using System;
using System.Collections.Generic;
using System.Text;
using EntidadesTO;
using System.Data;
using System.Data.SqlClient;

namespace AccesoDatos
{
    public class CondominioDA
    {
        public void GuardarNuevo(CondominioTO pCondominio)
        {
            SqlCommand comando;
            ConexionBD instanciaConexion = ConexionBD.ObtenerInstancia();

            try
            {
                instanciaConexion.AbrirConexion();
                comando = new SqlCommand("sp_ins_SEC_Condominio", instanciaConexion.ObtenerConexion());
                comando.Parameters.AddWithValue("@pNumCondominio", pCondominio.NumCondominio);
                comando.Parameters.AddWithValue("@pNumDocumento", pCondominio.NumDocumento);
                comando.Parameters.AddWithValue("@pCodDocumento", pCondominio.CodDocumento);
                comando.Parameters.AddWithValue("@pNombres", pCondominio.Nombres);
                comando.Parameters.AddWithValue("@pDireccion", pCondominio.Direccion);
                comando.Parameters.AddWithValue("@pPorcentaje", pCondominio.Porcentaje);
                comando.Parameters.AddWithValue("@pNumJurada", pCondominio.NumJurada);
                comando.Parameters.AddWithValue("@pSecDistrito", pCondominio.SecDistrito);

                comando.CommandType = CommandType.StoredProcedure;

                comando.ExecuteNonQuery();

                instanciaConexion.CerrarConexion();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                if (instanciaConexion.ObtenerConexion().State != ConnectionState.Closed)
                {
                    instanciaConexion.CerrarConexion();
                }
            }
        }

        public List<CondominioTO> BuscarCondominioLlave(int numJurada)
        {
            List<CondominioTO> listaCondominio = new List<CondominioTO>();
            SqlDataReader reader = null;
            SqlCommand comando;
            ConexionBD instanciaConexion = ConexionBD.ObtenerInstancia();

            try
            {

                instanciaConexion.AbrirConexion();
                comando = new SqlCommand("sp_get_SEC_Condominio_key", instanciaConexion.ObtenerConexion());
                comando.Parameters.AddWithValue("@pNumJurada", numJurada);

                comando.CommandType = CommandType.StoredProcedure;

                reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    CondominioTO condominioTO = new CondominioTO();
                    condominioTO.NumCondominio = reader.GetInt32(reader.GetOrdinal("numCondominio"));
                    condominioTO.NumDocumento = reader.GetString(reader.GetOrdinal("numDocumento"));
                    condominioTO.CodDocumento = reader.GetInt32(reader.GetOrdinal("codDocumento"));
                    condominioTO.Nombres = reader.GetString(reader.GetOrdinal("nombres"));
                    condominioTO.Direccion = reader.GetString(reader.GetOrdinal("direccion"));
                    condominioTO.Porcentaje = reader.GetDecimal(reader.GetOrdinal("porcentaje"));
                    condominioTO.NumJurada = reader.GetInt32(reader.GetOrdinal("numJurada"));
                    condominioTO.SecDistrito = reader.GetInt32(reader.GetOrdinal("secDistrito"));
                    condominioTO.DesDocumento = reader.GetString(reader.GetOrdinal("desSigla"));
                    condominioTO.DesDistrito = reader.GetString(reader.GetOrdinal("desDistrito"));
                    condominioTO.SecProvincia = reader.GetInt32(reader.GetOrdinal("secProvincia"));
                    condominioTO.SecDepartamento = reader.GetInt32(reader.GetOrdinal("secDepartamento"));
                    condominioTO.SecPais = reader.GetInt32(reader.GetOrdinal("secPais"));

                    listaCondominio.Add(condominioTO);
                }

                reader.Close();
                instanciaConexion.CerrarConexion();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                listaCondominio = null;

            }
            finally
            {
                if (reader != null)
                {
                    if (reader.IsClosed == false)
                        reader.Close();
                }
                if (instanciaConexion.ObtenerConexion().State != ConnectionState.Closed)
                {
                    instanciaConexion.CerrarConexion();
                }
            }

            return listaCondominio;

        }

        public void Eliminar(int pNumJurada)
        {
            SqlCommand comando;
            ConexionBD instanciaConexion = ConexionBD.ObtenerInstancia();

            try
            {
                instanciaConexion.AbrirConexion();
                comando = new SqlCommand("sp_del_SEC_Condominio", instanciaConexion.ObtenerConexion());
                comando.Parameters.AddWithValue("@pNumJurada", pNumJurada);

                comando.CommandType = CommandType.StoredProcedure;

                comando.ExecuteNonQuery();

                instanciaConexion.CerrarConexion();
            }
            catch (SqlException ex)
            {
                throw ex;
            }
            finally
            {
                if (instanciaConexion.ObtenerConexion().State != ConnectionState.Closed)
                {
                    instanciaConexion.CerrarConexion();
                }
            }
        }
    }
}
